RocketMQ Connect 概述
RocketMQ Connect 是 RocketMQ 数据集成的重要组成部分,它可以高效可靠地将数据从各种系统传输进出 RocketMQ。它是一个独立的、分布式的、可扩展的、容错的系统,具有低延迟、高可靠性、高性能、低代码和强可扩展性等特点。它可以实现各种异构数据系统连接、数据管道构建、ETL、CDC 和数据湖功能。
连接器工作原理
RocketMQ Connect 是一个独立的、分布式的、可扩展的、容错的系统,主要为 RocketMQ 提供将数据流入流出各种外部系统的能力。用户无需编程,只需简单的配置即可使用 RocketMQ Connect,例如将数据从 MySQL 同步到 RocketMQ,只需配置账号密码、连接地址以及需要同步的数据库和表名。
连接器用例
构建流式数据管道
在业务系统中,MySQL 优秀的交易支持用于处理数据添加、删除和修改,ElasticSearch 和 Solr 用于实现强大的搜索功能,或者将生成的业务数据同步到数据分析系统和数据湖(如 Hudi)进行进一步处理,从而使数据产生更高的价值。使用 RocketMQ Connect,可以轻松实现这样的数据管道功能。只需配置三个任务:第一个任务是从 MySQL 获取数据,第二个和第三个任务是从 RocketMQ 消费数据到 ElasticSearch 和 Hudi。配置这三个任务就实现了从 MySQL 到 ElasticSearch 和从 MySQL 到 Hudi 的两个数据管道,既可以满足业务交易的需求,也可以满足搜索的需求,还可以构建数据湖。
CDC
CDC 作为 ETL 模式之一,可以近乎实时地捕获数据库的 INSERT、UPDATE、DELETE 变化,RocketMQ Connect 流数据传输,具有高可用性和低延迟的特点,通过连接器可以轻松实现 CDC。
连接器部署
创建连接器时,通常通过配置完成。连接器通常包括逻辑连接器和执行数据复制的任务,即物理线程,如下图所示,两个连接器连接器及其相应的运行任务任务。
一个连接器也可以同时运行多个任务来提高连接器的并行度。例如,下图中的 Hudi Sink 连接器有 2 个任务,每个任务处理不同的分片数据,从而提高连接器的并行度,提高处理性能。
RocketMQ Connect Worker 支持两种运行模式,集群模式和单机模式。在集群模式下,顾名思义,有多个 Worker 节点,建议至少有 2 个 Worker 节点才能形成高可用集群。集群配置信息、偏移量信息和状态信息存储在指定的 RocketMQ Topic 中。新的 Worker 节点也会获取这些配置、偏移量和状态信息,并触发负载均衡,在集群中重新分配任务,以达到平衡状态,减少 Worker 节点数量或当 Worker 节点宕机时,也会触发负载均衡,确保集群中所有任务都能在集群存活节点上正常运行。
在独立模式下,连接器任务在单台机器上运行,Worker 本身没有高可用性,任务偏移量信息在本地持久化。适用于没有高可用性要求或不需要 Worker 保证高可用性的场景,例如在 K8s 集群中部署,由 K8s 集群保证高可用性。